package com.mathpractise.question.generator;

import com.mathpractise.model.enums.QuestionType;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import java.util.EnumMap;
import java.util.Map;

/**
 * 题目生成器配置类
 * 
 * 管理所有题目生成器的配置，建立题型枚举与生成器实现的映射关系
 */
@Configuration
@ComponentScan(basePackages = "com.mathpractise.question.generator")
public class QuestionGeneratorConfig {
    
    private final Map<QuestionType, QuestionGenerator> generatorMap = new EnumMap<>(QuestionType.class);
    
    /**
     * 注册题目生成器
     * 
     * @param generator 题目生成器实例
     */
    public void registerGenerator(QuestionGenerator generator) {
        generatorMap.put(generator.getSupportedType(), generator);
    }
    
    /**
     * 获取指定题型的生成器
     * 
     * @param questionType 题型枚举值
     * @return 对应的题目生成器，如果不存在则返回null
     */
    public QuestionGenerator getGenerator(QuestionType questionType) {
        return generatorMap.get(questionType);
    }
    
    /**
     * 获取所有已注册的题目生成器
     * 
     * @return 题目生成器映射表
     */
    public Map<QuestionType, QuestionGenerator> getAllGenerators() {
        return new EnumMap<>(generatorMap);
    }
    
    /**
     * 检查指定题型是否有对应的生成器
     * 
     * @param questionType 题型枚举值
     * @return 是否存在对应的生成器
     */
    public boolean hasGenerator(QuestionType questionType) {
        return generatorMap.containsKey(questionType);
    }
}